home *** CD-ROM | disk | FTP | other *** search
- Revision 3
-
-
- Dokumentation zur Port-Portstruktur von Prometheus
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- FCPort Port 'rexx_PMBSx'
- (x ist eine Zahl von 0-19)
- b=Byte
- w=Word
- l=Long
- c()=Char(0-terminiert) in Klammern steht die max. Länge
-
- Adresse bekommt man per FindPort() (Offset -390 der exec.library)
-
- Offset
-
- 236 l Screenadresse des Ports (0 wenn Iconify)
- 240 w Änderungsmitteilung an den Server (1=Änderung/0=nichts)
- 244 c(71) String (0 terminiert) der auf dem Serverbildschirm bei
- dem Port angezeigt wird (also Username z.b)
- 350 l Flags (Bit 0 - Hide User an / nicht an)
- (Bit 1 - User wartet auf Multichat)
- ab 400 Daten des eingeloggten Users (Name aus 244 ermitteln)
-
- 400 l erster Login
- 404 l letzter Login
- 408 l letzte Paßwortänderung
- 412 l Anrufe
- 416 l Flags des Users (siehe Userdatendokumentation)
- 420 l Downloadfreiraum
- 424 l binäre Uploads
- 428 l binäre Downloads
- 432 l Ascii Uploads
- 436 l Ascii Downloads
- 440 l Konto
- 444 l Baudrate
- 448 l Boxanrufzahl beim letzten Login des Users
- 452 w Zeitlimit
- 454 w wieviel Zeit steht im für diesen Login zur Verfügung
- 456 w Top UploadCPS
- 458 w Top DownloadCPS
- 460 b Emulation (0 Keine/1 Ansi Farbe/2 Ansi Mono/3 Rip)
- 461 b Zeilenanzahl
- 462 b Tarifzone
- 463 b UpDoRate
- 464 b Modus (0 Geonet / 1 Menue / 2 Cursor)
- 465 b Packer
- 466 b Protokoll
- 467 b Sprache
- 468 l Bezugsdatum
- 482 l Transfernote (wenn <>0, steht hier die Adresse der
- Transfernote der MEtaxpr.library... nähere Erläuterungen
- in der Anleitung der Metaxpr.library
- 486 w Anzahl der Downloads während des aktuellen Logins
- 488 w Anzahl der Uploads während des aktuellen Logins
-
- 500 b intern
- 502 b Port für Arexx bereit (1 nicht bereit/0 bereit)
-
-
-
-
- Dokumentation zur Server Portstruktur von Prometheus
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Was fehlt noch in der Dok?
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- - Onlineflags
- - Protokollflags
- - Brettflags
- - Befelsflags
- - Gruppenflags
-
- Erklärung des Datumformats
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Dieses Datumformat wird benutzt bei
-
- *Userdaten
- - Letzter Login
- - Bezugsdatum
- - letzte Paßwortänderung
-
- *Brettliste
- - letzter Eintrag
-
- Wie bekomme ich:
- (L bedeutet Langwort.. bin zu faul)
- (AND ist die logische UND Operation)
-
- - Stunden : das L 12 Bits nach rechts schieben und dann AND mit 31 machen
- - Minuten : das L 6 Bits nach rechts schieben und dann AND mit 63 machen
- - Sekunden: einfach AND 63 mit dem L
-
- - Tage : das L 17 Bits nach rechts schieben und dann AND mit 31 machen
- - Monate : das L 22 Bits nach rechts schieben und dann AND mit 15 machen
- - Jahre : das L 26 Bits nach rechts schieben und dann 1980 addieren
-
-
- Benutzte Feldtypen
- ~~~~~~~~~~~~~~~~~~~~
-
- Wenn von LIST-Strukturen geredet wird, sind die ORIGINAL Amiga
- LISTSTRUKTUREN mit LISTHEADERN gemeint (im Header steht noch kein
- Namenfeld!).
-
- Dann gibt es noch ein eigenes Listen-Format... ich nenne es jetzt nur
- DIM-FELD.
-
- Man hole sich die Adresse eines DIM-FELDES. Dann holt man sich die Adresse
- die an dem Langwort steht. Nun hat man den Zeiger auf das eigentliche Feld.
-
- Beispiel in Assembler für den Brettnamen (in A6 ist die Serveradresse)
-
- move.l 174(a6),a4
- move.l (a4),a4
-
- Jetzt steht an: (als Offset zum erhaltenen Langwort)
-
- 0 l Grösse des Feldes (wäre hier gleich (max Bretter))
- ab 4 kommt jetzt das Feld (Typen c=char/l=Long/W=Word/B=Byte)
-
- Beipiel Bytefeld:
- 4 1.Byte
- 5 2.Byte
- 6 3.Byte
- ...
-
- Beispiel Wordfeld:
- 4 1.Word
- 6 2.Word
- 8 3.Word
- ...
-
- Beispiel Longfeld:
- 4 1.Long
- 8 2.Long
- 12 3.Long
- ...
-
- Ein Charfeld ist ein Longfeld das Adressen zu C-Strings (0-terminiert)
- beinhaltet.
- Beispiel (Brettname)
-
- 4 1.Long = $ef302434
-
- an $ef302434 liegt jetzt ein C-String (aus GFA-BASIC einfach
- auslesen mit CHAR{} oder aus BLITZ-BASIC mit PEEK$())
-
- Wie bekomme ich Prometheus zum Speichern?
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Hierzu benutzen wir das Aktionslangwort (+396), indem wir bestimmte Bits
- setzen.
-
- Bit 0 Bretter speichern
- Bit 1 Userliste
- Bit 2 Boxen
- Bit 3 Gruppen
- Bit 4 Anrufe+Auslastung
- Bit 5 Preferences
-
- Der Server speichert dann von selbst, sobald er bereit ist
-
- Multiport Inhaltsverwaltung
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-
- Diese Informationen sind eigentlich sehr gefährlich, da sie sehr
- schwierig zu realisieren sind. Bitte auf JEDEN FALL Rücksprache mit mir
- nehmen, wenn man etwas mit der Multiport-Fileverwaltung macht, damit es
- hinterher keine Probleme gibt (02104 / 12796)
-
- Man darf bei Prometheus auf gar keinen Fall ohne weiteres Indexfiles laden
- oder speichern.
-
- Bei 20400 bekommt man die Adresse eines STRING DIM FELDs mit 100 Elementen.
- In den Strings steht entweder nichts, oder der Pfad zu einem Indexfile
- (komplett!) z.B.
-
- "prometheus:bretter/amiga/dfue/°inx" (nicht CASE-SENSITIVE überprüfen!!)
-
- Man weiß nun, ob der Index schon im Ram ist oder nicht, und welche Nummer
- er hat.
-
- nun rechnet man: Adresse: 20404 (Beginn der Zusatzfelder) + Nummer*10
- (Nummer fängt bei 0 an!)
-
- jetzt steht an
-
- Adresse+0 WORD wieviele Tasks benutzen diesen Index?
- +2 WORD wieviele Einträge hat der Index
- +4 LONG Adresse der Liststruktur
-
- Prometheus verwaltet INDEXLISTEN im RAM als Liststruktur (mit Listheader).
- Ab nodeadresse+14 ist dann der INDEX wie auf Platte (ohne Längenwort am
- Anfang). Das ganze Eintrag ist mit 0 abgeschlossen.
-
- also char{nodeadr%+14} liefert einen Inhaltseintrag
-
- Index komplett einlesen
- ~~~~~~~~~~~~~~~~~~~~~~~~
-
- Index ist schon im RAM:
- Wollen wir jetzt einen Index einlesen, erhöhen wir zuerst den Taskzähler
- um 1, damit kein anderer Task den Index im Ram löscht.
- Dann können wir die Eintragsanzahl und die Liststruktur einfach benutzen.
-
- Index ist nicht im RAM:
- Index in eine LISTSTRUKTUR (HEADER 14 BYTES) lesen. Wie die NODES aufgebaut
- sind bitte bei INDEX SCHLIEßEN lesen. Jeder Nodeeintrag repräsentiert einen
- Inhaltseintrag!
- Der Pfad wird bei einem freien Eintrag im DimFeld eingetragen. Und die
- Liststruktur etc wird dann im Adressenfeld (Offset beachten) eingetragen.
- 20404 + (Nummer im DIM-FELD)*10. Taskzugriffe ist dann natürlich 1.
-
- Bei jedem Nodeeintrag die Länge des Nodes im Wort vor der Adresse speichern
- (siehe Index schließen)
-
- Index schließen
- ~~~~~~~~~~~~~~~
-
- Wir speichern zuerst den Index auf Platte.
- Wir ziehen 1 von den Taskzugriffen ab.
- Sollte die Anzahl nun 0 sein, löschen wir den Indexstring im DIMFELD und
- die 8 Bytes im dazugehörigen Adressenfeld. Danach geben wir die gesamte
- Listenstruktur frei (mit Listenkopf)
-
- Der Listenkopf hat 14 BYTES. Die Länge der Listenelemente steht im Langwort
- davor.
-
- Wenn wir also eine Nodeadresse haben, geben wir ihn so frei
-
- FREEMEM(nodeadr%-4,long{nodeadr%-4}+4)
-
- Eintrag anhängen
- ~~~~~~~~~~~~~~~~
-
- Dies ist noch das einfachste. Wir schauen, ob das Indexfile schonmal im RAM
- ist,
-
- wenn ja: neuen Nodeeintrag anhängen (ADDTAIL aus der exec.library)
-
- danach einfach im APPEND Modus den INDEXeintrag ans INX File auf der Platte
- anhängen.
-
-
-
-
-
- Offsets zum Server
- ~~~~~~~~~~~~~~~~~~~~
-
- FCSERVER Port 'rexx_PXServer'
-
- b=Byte
- w=Word
- l=Long
- c()=Char(0-terminiert) ind Klammern steht die max. Länge
-
- Adresse bekommt man per FindPort() (Offset -390 der exec.library
- als Parameter in a1 den Namen angeben)
-
- Offset
-
- 150 w max Teilnehmer -1
- 152 w max Bretter -1
- 156 w max Pm
- 158 w max Text
- 160 w max Netzboxen
- 162 w Brettanzahl
- 164 w Netzboxen
- 166 w Teilnehmeranzahl
-
- Anmerkung zu Brettern:
-
- Die Bretter sind unsortiert, wenn der Brettname "" ist, ist das Brett nicht
- existent, trotzdem kann im nächsten Feld wieder ein Brett sein. Die
- Sortierung erfolgt über das Sortierfeld.
- In Feld 0 des Sortierfeldes steht die Nummer des Brettes mit dem im
- Alphabet am niedrigsten stehenden Namen. Das geht dann nach unten weiter.
-
- Nummern gelten immer ab 0 aufwärts
-
- Das gleiche gilt auch für Netzboxen!
-
-
- 170 l DIM-FELD(l) Sortierung der Bretter
- 174 l DIM-FELD(c) Brettname
- 178 l DIM-FELD(l) Letzter Eintrag
- 182 l DIM-FELD(c) Pfad
- 186 l DIM-FELD(c) ganzer Name des Brettes
- 190 l DIM-FELD(c) Verteiler (Boxen durch '|' getrennt)
- 194 l DIM-FELD(c) Gruppen
- 60 Bytes(LGruppe(c20)+SGruppe(c20)+IGruppe(20))
- Zwischenräume mit 1-BYTES (nicht 0!) gefüllt
- 198 l DIM-FELD(c) ganzer Name, aber ohne Netzoberbrett
- (für maximalen Speed beim Sorter)
- 202 l DIM-FELD(l) Sortierung der Bretter ohne Netzoberbrett
- 210 l DIM-FELD(w) max. Rout
- 214 l DIM-FELD(w) max. Inhalt
- 218 l DIM-FELD(w) Brettkopf (da feste Offsets einfach
- Brettnummer)
- 222 l DIM-FELD(l) Brettflags
- Bit 1 Marke
- Bit 2 L.Kommentar
- Bit 3
-
- weitere Brettfelder ab 15000
-
-
-
-
- 226 l DIM-FELD(c) Teilnehmer (sortiert)
-
- 230 l DIM-FELD(l) Sortierung der Netzboxen
- 234 l DIM-FELD(c) Boxname
- 238 l DIM-FELD(c) PM-Route
- 242 l DIM-FELD(c) Paßwort
- 246 l DIM-FELD(c) Telefonnummer (evtl. mehrere durch '|'
- getrennt)
- 250 l DIM-FELD(c) ModemInit
- 258 l DIM-DELD(w) Packernummer
- 262 l DIM-FELD(b) Protokollnummer
- 266 l DIM-FELD(l) Netzflags
- 274 l DIM-FELD(w) Eilmail PF/KB
- 278 l DIM-FLED(b) Netztyp
- 282 l DIM-FELD(c) Domain
-
-
-
-
- 300 l Servermem
- 304 l Portmem
- 308 l Sortermem
- 312 l Puffermem
- 316 l -frei-
- 320 l Readbuffer
- 324 l Writebuffer
- 328 l Adresse der PROMETHEUS.LIBRARY
- 332 l Adresse der GADTOOLS.LIBRARY
- 336 l Adresse der ASL.LIBRARY
- 340 l Windowadresse des Servers
- 344 l Screenadresse des Servers
- 348 l -nicht öffentlich-
- 352 l -nicht öffentlich-
- 356 l -nicht öffentlich-
- 360 w Fonthöhe (Oberfläche)
- 362 w Fonthöhe (Text)
- 364 l Adresse der DISKFONT.LIBRARY
- 368 l Fontadresse (Oberfläche)
-
- 376 l Screenbreite (Port+Server)
- 380 l Screenhöhe (Port+Server)
- 384 l -nicht öffentlich-
- 388 l Screenid (Port+Server)
- 392 w Serverprioritaet (+100)
- 394 w Sorterprioritaet (+100)
- 396 l Aktionslangwort (siehe spätere Beschreibung)
- 400 w Portbits (welche Ports sind offen?)
- 402 l 10 Langwörter folgen (Adressen der Arexxports der Ports)
-
- 620 l DIM-FELD(c) Name des Befehls
- 624 l DIM-FELD(c) Aufrufzeile des Befehls
- 628 l DIM-FELD(l) Parameter dafür
- 636 l DIM-FELD(c) Kommentar zum Befehl)
-
- 640 w Anzahl der Befehle
-
- 644 l DIM-FELD(b) Shortcut (Befehl)
- 648 l DIM-FELD(c) Gruppe (Befehl)
-
-
- 660 l DIM-FELD(c) Gruppennamen
- 664 l DIM-FELD(l) Zeiger auf LIST-Strukture mit Teilnehmernamen
- für die jeweilige Gruppe. User ist ein Space vorangestellt,
- Netzboxen ein '*'
- 668 l DIM-Feld(b) Gruppenflags
-
-
- 672 w Gruppenanzahl
- 680 l Globale Bits (Bit 0 Sysop rufbereit)
- (Bit 1 Sorter aktiv)
- (Bit 2 Cruncher aktiv)
- (Bit 3 Prepack aktiv)
- (Bit 4 Sysopoberfläche aktiv)
- (Bit 10 Debugmodus)
- (Bit 20-29 Netzsperre für Port gesetzt?)
-
- (Bit 31 Schloß aktiv)
-
- 1000 c30 Sysopname
- 1030 c30 Boxname
- 1060 c80 Chatzwangsmessage
- 1140 c30 Ripfontpfad
- 1170 c30 Showprogramm
- 1200 c30 Externer Editor
- 1230 c20 Oberflächenfont
- 1250 c20 Textfont
- 1330 c30 Uploadpfad
- 1360 c30 Downloadpfad
- 1390 c30 Asciipfad
- 1420 c30 Ripiconpfad
- 1450 c10 Quotezeichen
- 1460 l Mindestplatz auf HD
- 1464 w Logoff nach Minuten
- 1466 w max. Kommentarzeilen
-
- 1994 l Onlineflags
- 1998 w Portprioritaet +100
-
- 2000 w Zeit für eine Telefoneinheit im Nahtarif (Normaltarif)
- 2002 w Zeit für eine Telefoneinheit im Nahtarif (Billigtarif)
- 2004 w Zeit für eine Telefoneinheit im Regionaltarif (Normaltarif)
- 2006 w Zeit für eine Telefoneinheit im Regionaltarif (Billigtarif)
- 2008 w Zeit für eine Telefoneinheit im Ferntarif (Normaltarif)
- 2010 w Zeit für eine Telefoneinheit im Ferntarif (Billigtarif)
- 2012 w Kosten (in PF) für eine Telefoneinheit
-
- 3000-4600 Packerfeld (10*) (160 Bytes je Feld)
-
- 0 c10 Packername
- 10 c40 Packstring
- 50 c40 Entpackstring
- 90 c40 Inhaltsstring
- 130 c10 Packerendung
- 140 c20 10 Byte Kennung
- 4600-5400 F-Tasten (10 a 80 Bytes)
- 5400-5500 -reserviert-
-
- 5500 l PortScreenID
- 5504 l Portbreite
- 5508 l Porthoehe
-
-
- 6200-6400 Sprachen (10 a 20 Bytes)
- 6400-6448 Boxauslastung (24 Worte, jedes Wort beinhaltet wieviele
- Minuten in der jeweiligen Stunde User drin waren)
-
- 6800 c40 Pfad für neue Netzbretter
- 6840 c20 Netzgruppe
- 6860 c40 ZMAPSabsender
- 6900 c40 -frei-
- 6940 w max Kopienanzahl
- 6942 l Domainserver
- 6946 w Kosten Routpm pf/kb
- 6948 w Kosten Domainpm pf/kb
- 6950 l welche Headzeilen übernehmen
- Bit 0 Mailer
- Bit 1 OAB
- Bit 2 OEM
- Bit 3 ORG
- Bit 4 POST
- Bit 5 ROT
- Bit 6 Telefon
- 7000-7600 10* Formatname(c20)+Kennung(c20)+Directory(c20)
- 7600-7900 5*Boxdomains(c60)
- 7900 c20 Netzboxname
- 7920 c10 Zeitzone
- 7930 l max Brieflänge
- 7934 w Wahlversuche
- 7936 w Wahldelay (Sekunden)
- 7938 w MsgId Haltezeit
-
- 8010-8018 OS3 Farben (4 Wörter)
- 8018-8034 Ansifarben (8 Wörter)
- 8034-8066 Ripfarben (16 Wörter)
- 8100-13100 Modemfeld (10*) (500 Bytes je Feld)
-
- 0 c20 Connect
- 20 c20 Endconnect
- 40 c20 Faxconnect
- 60 c30 Device
- 90 c30 Terminalprogramm
- 120 c30 Faxprogramm
- 150 c10 Modemreset
- 160 c10 Auflegen
- 170 c10 Ring
- 180 c10 Antworten
- 190 c10 Wählen
- 200 c10 Besetzen
- 210 c10 Init
- 250 l Baudrate
- 254 l Lamerbaud
- 258 b Esccode
- 259 b Unit
- 260 b Flags (Bit 0 feste DTE / Bit 1 RTS/CTS/ Bit
- 2 Frontdoorbetrieb)
- 300 c100 Faxprogramm
- 400 c100 Frontdoorprogramm
-
- 14000 l Zähler wieviele Messages bis jetzt geschrieben wurden
- 14004 l Boxanrufe
- 14008 l Netzanrufe
- 14012 l Netzanrufe heute
- 14016 l neue Boxen heute
- 14048 l Uploads
- 14052 l Downloads
- 14056 l Tagesanrufe
- 14060 l neue Bretter heute
- 14064 l neue User heute
- 14068 l Uploads heute
- 14072 l Downloads heute
- 14076 l Box Online (gesamt in Minuten)
- 14120 l Box Online (heute in Minuten)
-
- 14896 l Textfontadr
-
- 15000 l DIM-FELD(w) Max Alter
- 15004 l DIM-FELD(w) Max KB
- 15008 l DIM-FELD(l) letzte Aktualisierung (in Sekunden seit
- 1.1.1978)
- 15012 l DIM-FELD(c) Verwalter
- 15016 l DIM-FELD(c) Paßwort
- 15020 l DIM-FELD(c) Kommentar
- 15024 l DIM-FELD(b) Ratio (100=Userratio)
-
-
- 15500 l Adresse des Domainroutingfeldes im Speicher
- 15504 w Anzahl der Einträge im Domainroutingfeld
-
- Im Domainroutingfeld ist jeder Eintrag 80 BYTES lang:
- Gesamtlaenge ist also Anzahl der Einträge (15504)*80 Bytes
-
- von 0-59 steht die Domain, oder die Box mit Domain oder * (Smarthost)
- (Rest mit 0 Bytes aufgefüllt!)
- von 60-79 steht die Routbox (ohne Domain) dafür (auch mit 0 Bytes
- aufgefüllt)
-
-
- 15506 l Basis der 'METAXPR.LIBRARY'
- 15510 l Adresse des Zeitplanfeldes
- 15514 w Anzahl der Einträge im Zeitplanfeld
-
- 15516 l Soviel Freiraum bekommt ein Gast nach dem Antrag
- 15520 w Rate für neue User
- 15522 l Zeit für neue User
- 15526 l Zeiger auf LIST-Struktur mit Gruppennamen, die ein
- User nach dem Antrag bekommt
-
- 15530 l ScreenID für RIP
- 15534 l ScreenBreite für RIP
- 15538 l ScreenHöhe für RIP
-
- 18000-20340 Protokollfeld (10*) (234 Bytes je Feld)
-
- 0 c30 Protokollname
- 30 c100 Sendestring
- 130 c100 Receivestring
- 230 l Flags
-
- 20340 c60 Skipfilename
- 20400 l Zeiger auf DIM-Feld für die Multiport-Inhaltsverwaltung
- 20404-21404 die Buffer dafür
- 22000-27000 2. Modemfeld (wieder 10 Ports)
-